package com.soft.hwx.scdapp.msg;

public class HostSetArgsMsg extends RawMsg {
    private short  cmd;
    private  int sendCount;

    private  byte reserved;

    private  byte targetNum;

    public byte t1Sn;   //目标1 序号
    private short  reserved1;
    private short  reserved2;

    public short t1UpperLimitCarrierFreq = 0 ;   //目标1  载频上限
    public short t1LowerLimitCarrierFreq = 0;   //目标1  载频下限

    //private short  reserved1;
    //private short  reserved2;
    //private short  reserved1;
    //private short  reserved2;

    public int t1UpperLimitRepeatPeriodic = 0;  //目标1  重复周期值上限
    public int t1LowerLimitRepeatPeriodic = 0;  //目标1  重复周期值下限

    //private short  reserved2;

    public int  t1UpperLimitPulseWidth = 0;     //目标1   脉宽上限
    public int  t1LowerLimitPulseWidth = 0;     //目标1   脉宽下限

    private byte t2Sn;   //目标2 序号
    //private short  reserved1;
    //private short  reserved2;

    public short t2UpperLimitCarrierFreq = 0;   //目标2  载频上限
    public short t2LowerLimitCarrierFreq = 0;   //目标2  载频下限

    //private short  reserved1;
    //private short  reserved2;
    //private short  reserved1;
    //private short  reserved2;

    public int t2UpperLimitRepeatPeriodic = 0;  //目标2  重复周期值上限
    public int t2LowerLimitRepeatPeriodic = 0;  //目标2  重复周期值下限

    //private short  reserved2;

    public int  t2UpperLimitPulseWidth = 0;     //目标2   脉宽上限
    public int  t2LowerLimitPulseWidth = 0;     //目标2   脉宽下限

    //private short  reserved1;
    //private short  reserved2;

    private byte t3Sn;   //目标2 序号
    //private short  reserved1;
    //private short  reserved2;

    public short t3UpperLimitCarrierFreq = 0;   //目标3  载频上限
    public short t3LowerLimitCarrierFreq = 0;   //目标3  载频下限

    //private short  reserved1;
    //private short  reserved2;
    //private short  reserved1;
    //private short  reserved2;

    public int t3UpperLimitRepeatPeriodic = 0;  //目标3  重复周期值上限
    public int t3LowerLimitRepeatPeriodic = 0;  //目标3  重复周期值下限

    //private short  reserved2;

    public int  t3UpperLimitPulseWidth = 0;     //目标3   脉宽上限
    public int  t3LowerLimitPulseWidth = 0;     //目标3   脉宽下限


    public HostSetArgsMsg(RawMsg msg){

        super(msg.getBuf(),0x64);
        length = 0x64 -4;
        this.workCmd = msg.workCmd;

    }

    public HostSetArgsMsg(short workCmd,byte [] buf){
        //调用父类的构成函数
        super(buf,0x64);
        this.workCmd = workCmd;
        length = 0x64 -4;
    }



    @Override
    public void ToBuf(){
        buf[2] = length;

        buf[3] = (byte) (workCmd >> 8);
        buf[4] = (byte) (workCmd & 0x00FF);
        //
        buf[5] = (byte) ((sn & 0xFF000000)>> 24);
        buf[6] = (byte) ((sn & 0x00FF0000)>> 16);
        buf[7] = (byte) ((sn & 0x0000FF00)>> 8);
        buf[8] = (byte) ((sn & 0x000000FF));

        buf[9] = 1;//备用[1-3]

        buf[10] = t1Sn;//装订目标数

        buf[11] = 1;//目标1序号

        buf[12] = 0;//备用 低位
        buf[13] = 0;//备用 高位

        //[2000-18000]
        buf[14] = (byte)0xD0;//备用 低位
        buf[15] = 0x07;//备用 高位

        //目标1载频上限[500-18000]
        buf[16] = (byte)(t1UpperLimitCarrierFreq & 0x00ff);//低位
        buf[17] = (byte)((t1UpperLimitCarrierFreq & 0xff00)>>8);//高位
        //目标1载频下限[500-18000]
        buf[18] = (byte)(t1LowerLimitCarrierFreq & 0x00ff);//低位
        buf[19] = (byte)((t1LowerLimitCarrierFreq & 0xff00)>>8);//高位

        //[2000-18000]
        buf[20] = (byte)0xD0;//备用 低位
        buf[21] = 0x07;//备用 高位

        //[2000-18000]
        buf[22] = (byte)0xD0;//备用 低位
        buf[23] = 0x07;//备用 高位

        //[2000-18000]
        buf[24] = (byte)0xD0;//备用 低位
        buf[25] = 0x07;//备用 高位

        //16位无符号整型 [33.3-6666.7] 当量0.2 备用
        buf[26] = (byte)0x02;//备用 低位
        buf[27] = 0x00;//备用 高位

        //目标1重复周期值上限 [33.3-6666.7]
        buf[28] = (byte)(t1UpperLimitRepeatPeriodic & 0x00ff);//低位
        buf[29] = (byte)((t1UpperLimitRepeatPeriodic & 0xff00)>>8);//高位

        //目标1重复周期值下限 [33.3-6666.7]
        buf[30] = (byte)(t1LowerLimitRepeatPeriodic & 0x00ff);//低位
        buf[31] = (byte)((t1LowerLimitRepeatPeriodic & 0xff00)>>8);//高位

        //[0.5-500]  当量0.01
        buf[32] = (byte)0x05;//备用 低位
        buf[33] = 0x00;//备用 高位

        //目标1脉宽上限 [0.5-500]
        buf[34] = (byte)(t1UpperLimitPulseWidth & 0x00ff);//低位
        buf[35] = (byte)((t1UpperLimitPulseWidth & 0xff00)>>8);//高位

        //目标1脉宽下限 [0.5-500]
        buf[36] = (byte)(t1LowerLimitPulseWidth & 0x00ff);//低位
        buf[37] = (byte)((t1LowerLimitPulseWidth & 0xff00)>>8);//高位

        buf[38] = 2;//目标2序号


        //详见附表2-1 ？
        buf[39] = 0x00;//备用 低位
        buf[40] = 0x00;//备用 高位

        //详见附表2-1 ？
        buf[41] = 0x00;//备用 低位
        buf[42] = 0x00;//备用 高位


        //目标2载频上限[500-18000]
        buf[43] = (byte)(t2UpperLimitCarrierFreq & 0x00ff);//低位
        buf[44] = (byte)((t2UpperLimitCarrierFreq & 0xff00)>>8);//高位
        //目标2载频下限[500-18000]
        buf[45] = (byte)(t2LowerLimitCarrierFreq & 0x00ff);//低位
        buf[46] = (byte)((t2LowerLimitCarrierFreq & 0xff00)>>8);//高位

        //备用 16位无符号整型
        buf[47] = 0x00;//备用 低位
        buf[48] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[49] = 0x00;//备用 低位
        buf[50] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[51] = 0x00;//备用 低位
        buf[52] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[53] = 0x00;//备用 低位
        buf[54] = 0x00;//备用 高位

        //目标2重复周期值上限 [33.3-6666.7]
        buf[55] = (byte)(t2UpperLimitRepeatPeriodic & 0x00ff);//低位
        buf[56] = (byte)((t2UpperLimitRepeatPeriodic & 0xff00)>>8);//高位

        //目标2重复周期值下限 [33.3-6666.7]
        buf[57] = (byte)(t2LowerLimitRepeatPeriodic & 0x00ff);//低位
        buf[58] = (byte)((t2LowerLimitRepeatPeriodic & 0xff00)>>8);//高位

        //备用 16位无符号整型
        buf[59] = 0x00;//备用 低位
        buf[60] = 0x00;//备用 高位

        //目标2脉宽上限 [0.5-500]
        buf[61] = (byte)(t2UpperLimitPulseWidth & 0x00ff);//低位
        buf[62] = (byte)((t2UpperLimitPulseWidth & 0xff00)>>8);//高位

        //目标2脉宽下限 [0.5-500]
        buf[63] = (byte)(t2LowerLimitPulseWidth & 0x00ff);//低位
        buf[64] = (byte)((t2LowerLimitPulseWidth & 0xff00)>>8);//高位

        buf[65] = 3;//目标3序号

        //详见附表2-1 ？
        buf[66] = 0x00;//备用 低位
        buf[67] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[68] = 0x00;//备用 低位
        buf[69] = 0x00;//备用 高位

        //目标3载频上限[500-18000]
        buf[70] = (byte)(t3UpperLimitCarrierFreq & 0x00ff);//低位
        buf[71] = (byte)((t3UpperLimitCarrierFreq & 0xff00)>>8);//高位
        //目标3载频下限[500-18000]
        buf[72] = (byte)(t3LowerLimitCarrierFreq & 0x00ff);//低位
        buf[73] = (byte)((t3LowerLimitCarrierFreq & 0xff00)>>8);//高位

        //备用 16位无符号整型
        buf[74] = 0x00;//备用 低位
        buf[75] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[76] = 0x00;//备用 低位
        buf[77] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[78] = 0x00;//备用 低位
        buf[79] = 0x00;//备用 高位

        //备用 16位无符号整型
        buf[80] = 0x00;//备用 低位
        buf[81] = 0x00;//备用 高位

        //目标3重复周期值上限 [33.3-6666.7]
        buf[82] = (byte)(t3UpperLimitRepeatPeriodic & 0x00ff);//低位
        buf[83] = (byte)((t3UpperLimitRepeatPeriodic & 0xff00)>>8);//高位

        //目标3重复周期值下限 [33.3-6666.7]
        buf[84] = (byte)(t3LowerLimitRepeatPeriodic & 0x00ff);//低位
        buf[85] = (byte)((t3LowerLimitRepeatPeriodic & 0xff00)>>8);//高位

        //备用 16位无符号整型
        buf[86] = 0x00;//备用 低位
        buf[87] = 0x00;//备用 高位

        //目标3脉宽上限 [0.5-500]
        buf[88] = (byte)(t3UpperLimitPulseWidth & 0x00ff);//低位
        buf[89] = (byte)((t3UpperLimitPulseWidth & 0xff00)>>8);//高位

        //目标3脉宽下限 [0.5-500]
        buf[90] = (byte)(t3LowerLimitPulseWidth & 0x00ff);//低位
        buf[91] = (byte)((t3LowerLimitPulseWidth & 0xff00)>>8);//高位

        //备用
        buf[92] = 0x00;//备用
        buf[93] = 0x00;//备用
        buf[94] = 0x00;//备用
        buf[95] = 0x00;//备用
        buf[96] = 0x00;//备用
        buf[96] = 0x00;//备用
        buf[97] = 0x00;//备用
        buf[98] = 0x00;//备用

        //调用父类方法
        super.ToBuf();
    }

}
